مشخصات مقاله
-
1107
-
0.0
-
2503
-
0
-
0
درس هفدهم : آموزش مدل نگاشت Table Per Subclass با استفاده از فایل xml
آموزش مدل نگاشت Table Per Subclass با استفاده از فایل xml
در مدل نگاشت Table Per Subclass، جدول های آدرس دهی شده کلاس های زیرمجموعه از طریق کلیدهای اصلی (Primary key) و یا کلید خارجی (foreign key) به جدول کلاس اصلی Parent برنامه مرتبط هستند.
در کد فایل زیر، نحوه آدرس دهی (map) سلسله مراتب Hierarchy را با استفاده از المنت joined-subclass نشان داده ایم : در مدل نگاشت Table Per Subclass، سه جدول در پایگاه داده وجود دارد که هر یک از آن ها نماینده یکی از کلاس های برنامه می باشد. همچنین زیر المنت joined-Subclass، کلاس زیرمجموعه یا Subclass را در کد مشخص می کند. ساختار هر یک از جدول های سلسله مراتب برنامه به صورت زیر است : در مثال عملی این درس، ابتدا سه کلاس اصلی مثال را طراحی کرده و سپس آدرس دهی (mapping) آن ها را در فایل employee.hbm.xml تعیین می کنیم. برای این منظور مراحل زیر را انجام دهید : 1)ایجاد کلاس های اصلی Persistent Class : در مرحله اول، بایستی کلاس های اصلی و خام برنامه (Persistant Class) ها را که سلسله مراتب وراثت (hierarchy) را مشخص می کنند، تولید شود. فایل های زیر که هر کلاس را مشخص می کند : File: Employee.java File: Regular_Employee.java File: Contract_Employee.java 2)ایجاد فایل نقشه دهی (mapping) برای کلاس Persistent : کد فایل employee.hbm.xml که سلسله مراتب وراثت را در برنامه مشخص می کند، به شرح زیر است : 3)ایجاد فایل تنظیمات برنامه Configuration file : فایل تنظیمات برنامه hibernate.cgf.xml را باز کرده و المنت زیر را جهت آدرس دهی (mapping) به کد فایل اضافه کنید : پس از اصلاح کد فایل بایستی به صورت زیر تبدیل شود : خاصیت hbm2ddl.auto برای تولید اتوماتیک جدول ها در پایگاه داده تعین شده است. 4)ایجاد کلاس لازم جهت نگهداری شی Persistent Object : در کلاس StoreData.java که کد آن را در بخش زیر مشاهده می کنید، ساز و کار لازم جهت نگهداری شی Persistent Object لحاظ شده است :
از المنت
در مثال این درس، قصد داریم تا از خاصیت hb2dll.auto برای تولید خودکار جداول استفاده کنیم. بنابراین نیازی نیست نگران ایجاد جدول ها در پایگاه داده باشیم.
ابتدا بیایید نگاهی به سلسله مراتب کلاس هایی که می خواهیم با هم نگاشت یا آدرس دهی کنیم، بپردازیم :
Table structure for Employee class

Table structure for Regular_Employee class

Table structure for Contract_Employee class

مثال عملی نگاشت با مدل Table Per SubClass Class :
package com.javatpoint.mypackage;
public class Employee {
private int id;
private String name;
//getters and setters
}
package com.javatpoint.mypackage;
public class Regular_Employee extends Employee{
private float salary;
private int bonus;
//getters and setters
}
package com.javatpoint.mypackage;
public class Contract_Employee extends Employee{
private float pay_per_hour;
private String contract_duration;
//getters and setters
}
توجه:
package com.javatpoint.mypackage;
import org.hibernate.*;
import org.hibernate.cfg.*;
public class StoreData {
public static void main(String[] args) {
Session session=new Configuration().configure("hibernate.cfg.xml")
.buildSessionFactory().openSession();
Transaction t=session.beginTransaction();
Employee e1=new Employee();
e1.setName("sonoo");
Regular_Employee e2=new Regular_Employee();
e2.setName("Vivek Kumar");
e2.setSalary(50000);
e2.setBonus(5);
Contract_Employee e3=new Contract_Employee();
e3.setName("Arjun Kumar");
e3.setPay_per_hour(1000);
e3.setContract_duration("15 hours");
session.persist(e1);
session.persist(e2);
session.persist(e3);
t.commit();
session.close();
System.out.println("success");
}
}